package fileio

import com.sun.org.apache.bcel.internal.generic.NEW

/**
 * 文件I/o
 * 原有标准Java类 也可以使用
 * {@link File}
 * {@link InputStream}
 * {@link OutputStream}
 * {@link Reader}
 * {@link Writer}
 * 新增辅助方法 即 更简单的类 操作以下功能
 *   读写文件，遍历文件树，读写数据对象到文件
 *
 *
 *
 */
class FileIO {

    //File类用于实例化以文件名作为参数的新对象
    static File file = new File("D:/sd.txt")

    /**
     * 读取文件
     * 接受eachLine的函数，将它放到一个line的变量并相应地打印它
     */

    static  def  readFile(){
        file.eachLine {
            line -> println "line : $line"
        }
    }

    /**
     * 读取文件的内容到字符串
     * 如果要将文件的整个内容作为字符串获取，可以使用文件类的text属性
     * @return
     */
    static  def  readFileToChar(){
        println file.text
    }

    /**
     * 写入文件
     * 需要使用writer 类输出文本到一个文件中
     */
    static def writeFile(){
        file.withWriter('utf-8'){
            writer -> writer.write("hello world")
        }
    }

    /**
     * 获取文件的大小 使用文件类的length属性
     * @return
     */
    static def getFileInfo(){
        println file.length()
    }

    /**
     * 测试文件是否是目录
     * @return
     */
    static def isDirectory(){
        println file.isDirectory()
        println file.isFile()
    }

    /**
     * 创建目录
     * 如果要创建一个新目录，可以使用File类的mkdir函数
     * @return
     */
    static def createDir(){
        def file = new File('e:/directorytemp')
        file.mkdir()
    }

    /**
     * 删除文件
     * @return
     */
    static def deleteFile(){
        file.delete()
    }

    /**
     * 赋值
     * @return
     */
    static def copy(){
        def file1 = new File("d:/ddd.txt")
        def file = new File("d:/sd.txt")
        file1 << file.text
    }

    static void main(String[] args) {
        readFile()
        readFileToChar()
        writeFile()
        getFileInfo()
        isDirectory()
        copy()
    }

}
